import wx from 'weixin-js-sdk'
import axios from 'axios'
import tools from '@/util/tools'

let wx_server_url = 'http://wxapi.vlearn.cn/wecastsvr';

if (window.location.hostname.indexOf('vstudy.net.cn') != -1) {
	wx_server_url = 'http://wxapi.vstudy.net.cn/wecastsvr';
}
if (process.env.NODE_ENV == 'development') {
	wx_server_url = 'http://wxapi.vstudy.net.cn/wecastsvr';
}

// 生成分享链接
var createShareLink = function (cur_user_id) {
	let share_link = window.location.href.split('?')[0].split('#')[0];

	// let Base64 = require('js-base64').Base64;
	// share_link += '?hash_path=' + Base64.encode(window.location.hash);

	let request_params = tools.getRequest();
	let params_str = '';
	if (window.location.search != '') {//如果链接参数不为空
		for (var key in request_params) {
			if (key == "code" || key == "response_type" || key == "flag_type" || key == "hash_path") {
				continue;
			}

			let symbol = params_str == '' ? '?' : '&';
			params_str += symbol + key + "=" + request_params[key];
		}

		share_link += params_str;
	}

	if (!request_params['share_user_id'] && cur_user_id != '') {
		let symbol = params_str == '' ? '?' : '&';
		share_link += symbol + 'share_user_id=' + cur_user_id;
	}

	return share_link + window.location.hash;
};


let defaults = {
	mpID: '',
	userID: '',
	shareData: {
		shareTitle: '标题',
		shareContent: '内容',
		shareLink: '',
		shareImgUrl: ''
	}
};
let shareApi = {
	getMpJsConfig: function (mp_id) {
		var params = {
			functioncode: 'mp_get_js_config',
			mp_id: mp_id,
			url: encodeURIComponent(window.location.href.split('#')[0])
		};
		var _self = this;
		var temp_url = encodeURIComponent(window.location.href.split('#')[0]);
		//alert(temp_url);
		axios.get(wx_server_url + '?functioncode=mp_get_js_config&mp_id=' + mp_id + '&url=' + temp_url)
			.then(function (response) {
				_self.loadWxConfig(response.data.record);
			});
	},

	loadWxConfig: function (json) {
		wx.config({
			debug: false,
			appId: json.appid,
			timestamp: json.timestamp,
			nonceStr: json.noncestr,
			signature: json.signature,
			jsApiList: [
				'checkJsApi',
				'onMenuShareTimeline',
				'onMenuShareAppMessage',
				'onMenuShareQQ'
			]
		});
		wx.ready(function () {
			// 1 判断当前版本是否支持指定 JS 接口，支持批量判断
			wx.checkJsApi({
				jsApiList: [
					'onMenuShareTimeline',
					'onMenuShareAppMessage',
					'onMenuShareQQ'
				],
				success: function (res) {
					// alert(JSON.stringify(res));
				}
			});

			wx.onMenuShareTimeline({
				title: defaults.shareData.shareTitle, // 分享标题
				link: defaults.shareData.shareLink, // 分享链接
				imgUrl: defaults.shareData.shareImgUrl, // 分享图标
				trigger: function (res) {
					// 不要尝试在trigger中使用ajax异步请求修改本次分享的内容，因为客户端分享操作是一个同步操作，这时候使用ajax的回包会还没有返回
					// alert('分享到朋友圈')
				},
				success: function () {
					// 用户确认分享后执行的回调函数
				},
				cancel: function () {
					// 用户取消分享后执行的回调函数
				},
				fail: function (res) {
					alert(JSON.stringify(res));
				}
			});

			wx.onMenuShareAppMessage({
				title: defaults.shareData.shareTitle,
				desc: defaults.shareData.shareContent,
				link: defaults.shareData.shareLink,
				imgUrl: defaults.shareData.shareImgUrl,
				trigger: function (res) {
					// 不要尝试在trigger中使用ajax异步请求修改本次分享的内容，因为客户端分享操作是一个同步操作，这时候使用ajax的回包会还没有返回
					// alert(link);
				},
				success: function (res) {
					// alert('已分享');
				},
				cancel: function (res) {
					// alert('已取消');
				},
				fail: function (res) {
					alert(JSON.stringify(res));
				}
			});
			wx.onMenuShareQQ({
				title: defaults.shareData.shareTitle, // 分享标题
				desc: defaults.shareData.shareContent, // 分享描述
				link: defaults.shareData.shareLink, // 分享链接
				imgUrl: defaults.shareData.shareImgUrl, // 分享图标
				success: function () {
					// 用户确认分享后执行的回调函数
				},
				cancel: function () {
					// 用户取消分享后执行的回调函数
				},
				fail: function (res) {
					alert(JSON.stringify(res));
				}
			});
		});

		wx.error(function (res) {
			console.log('wx.error: ' + JSON.stringify(res));
			//alert('wx.error: ' + JSON.stringify(res));
		});
	},

	initConfig: function (options) {
		for (var item in options) {
			defaults[item] = options[item];
		}
		if (!defaults.shareData.shareLink || defaults.shareData.shareLink == '') {
			defaults.shareData.shareLink = createShareLink(defaults.userID);
		}

		if (defaults.mpID != '' && tools.getBrowser().versions.weixin) {
			this.getMpJsConfig(defaults.mpID);
		}
	}
}
export default shareApi